package uk.co.revisual.domino.core
{
	import org.puremvc.as3.multicore.utilities.statemachine.State;
	
	/**
	 * 
	 * @author revisual.co.uk
	 * 
	 * Holds information about the application state history.
	 * 
	 */
	public interface FSMHistory
	{
		/**
		 * The number of previous states to record 
		 * @default 5
		 */
		function get historyLength():int;
		
		/**
		 * @private
		 */
		function set historyLength( value:int ):void;
		
		/**
		 * the current application state
		 */
		function get currentState():State;
		
		/**
		 * the previous application state
		 */
		function get previousState():State;
		
		function get currentReferringAction():String;
		
		/**
		 * Retrieves the State from a requested position in the history
		 * @param index The position in history to retrieve the State from
		 * @return The requested state
		 */
		function getStateAt( index:int ):State;
		
		function getReferringActionAt( index:int ):String
			
		function get isInTransition():Boolean;
	}
}